// pages/index/index.js
import { request } from "../../request1/index.js"
Page({

    /**
     * 页面的初始数据
     */
    data: {
        //parts:[{name:"parts_test1",num:1},{name:"parts_test2",num: 2}],
        //dm_list:[0,1,3],
        //id:4
        showLoginDialog: false,  // 控制登录对话框显示
        pendingTarget: '',       // 登录成功后要跳转的页面
        pendingFlag: 0          // 登录成功后要检查的权限等级
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        // 页面加载时检查登录状态
        // this.checkLoginOnStart();
        /*let parts = this.data.parts;
        let dm_list = this.data.dm_list;
        let id = this.data.id;
        console.log(typeof(dm_list));
        request({ urlLeft: "/case/add", data: { dm_list, parts, id },method:"GET"})
        .then(result=>{
          console.log(result);
        })*/
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    },

    /**
     * 页面启动时检查登录状态
     */
    checkLoginOnStart() {
        let grade = wx.getStorageSync('grade') || -1;
        
        // 检查网络状态
        wx.getNetworkType({
            success: (res) => {
                console.log('网络类型：', res.networkType);
                if (res.networkType === 'none') {
                    wx.showModal({
                        title: '网络异常',
                        content: '当前无网络连接，请检查网络设置后重试',
                        showCancel: false
                    });
                    return;
                }
            }
        });
        
        if (grade === -1) {
            // 未登录，显示登录对话框
            console.log('用户未登录，弹出登录对话框');
            this.setData({
                showLoginDialog: true
            });
        } else {
            // 已登录，显示欢迎信息
            console.log('用户已登录，权限等级：', grade);
            wx.showToast({
                title: '欢迎使用故障向导',
                icon: 'success',
                duration: 1500,
            });
        }
    },

    /**
     * 用户点击登录按钮
     */
    handleLogin() {
        console.log('用户点击登录');
        const that = this;
        
        wx.getUserProfile({
            desc: '获取您的信息以便提供更好的服务',
            success: (resu) => {
                console.log('获取用户信息成功：', resu);
                
                wx.login({
                    success(res) {
                        console.log('微信登录响应：', res);
                        if (res.code) {
                            let code = res.code;
                            var { userInfo } = resu;
                            
                            console.log('准备发送登录请求，code:', code);
                            // console.log('请求地址：', 'https://guide.smart-park.nnweather.com/api/v1/wx/auth/wx/login');
                            console.log('请求数据：', { userInfo, code });
                            
                            request({ urlLeft: "/auth/wx/login", data: { userInfo, code }, method: "POST" })
                                .then(result => {
                                    console.log('后端登录响应：', result);
                                    
                                    if (result && result.data && result.data.info) {
                                        // 兼容两种返回结构：info 为数字或对象
                                        const info = result.data.info;
                                        const grade = typeof info === 'number' ? info : (info.grade !== undefined ? info.grade : -1);
                                        const token = typeof info === 'object' ? info.token : '';
                                        const userId = typeof info === 'object' ? info.id : '';
                                        console.log('info', info);
                                        console.log('grade', grade);
                                        wx.setStorageSync('grade', grade);
                                        if (token) wx.setStorageSync('token', token);
                                        if (userId) wx.setStorageSync('userId', userId);
                                        
                                        // 关闭登录对话框
                                        that.setData({
                                            showLoginDialog: false
                                        });
                                        
                                        wx.showToast({
                                            title: '登录成功',
                                            icon: 'success',
                                            duration: 1500,
                                        });
                                        console.log('登录成功，权限等级：', grade);
                                        
                                        // 检查是否有待跳转的页面
                                        if (that.data.pendingTarget) {
                                            setTimeout(() => {
                                                let grade = wx.getStorageSync('grade');
                                                if (grade >= that.data.pendingFlag) {
                                                    wx.navigateTo({
                                                        url: that.data.pendingTarget
                                                    });
                                                    // 清除待跳转信息
                                                    that.setData({
                                                        pendingTarget: '',
                                                        pendingFlag: 0
                                                    });
                                                } else {
                                                    wx.showToast({
                                                        title: '权限不足',
                                                        icon: 'none',
                                                        duration: 1500,
                                                    });
                                                }
                                            }, 1600);
                                        }
                                    } else {
                                        console.error('后端返回数据格式异常：', result);
                                        wx.showToast({
                                            title: '登录失败，请重试',
                                            icon: 'none',
                                            duration: 2000,
                                        });
                                    }
                                }).catch(err => {
                                    console.error('网络请求失败：', err);
                                    
                                    let errorMsg = '网络请求失败';
                                    if (err.errMsg) {
                                        if (err.errMsg.includes('timeout')) {
                                            errorMsg = '网络超时，请检查网络连接';
                                        } else if (err.errMsg.includes('fail')) {
                                            errorMsg = '连接服务器失败，请稍后重试';
                                        }
                                    }
                                    
                                    wx.showModal({
                                        title: '登录失败',
                                        content: errorMsg + '\n\n是否重试？',
                                        showCancel: true,
                                        cancelText: '取消',
                                        confirmText: '重试',
                                        success(res) {
                                            if (res.confirm) {
                                                // 用户点击重试，重新执行登录
                                                that.handleLogin();
                                            } else {
                                                // 用户取消，关闭登录对话框
                                                that.setData({
                                                    showLoginDialog: false,
                                                    pendingTarget: '',
                                                    pendingFlag: 0
                                                });
                                            }
                                        }
                                    });
                                });
                        } else {
                            console.error('微信登录失败：', res);
                            wx.showToast({
                                title: '微信登录失败',
                                icon: 'none',
                                duration: 2000,
                            });
                        }
                    },
                    fail(err) {
                        console.error('wx.login调用失败：', err);
                        wx.showToast({
                            title: '登录失败',
                            icon: 'none',
                            duration: 2000,
                        });
                    }
                });
            },
            fail: (err) => {
                console.error('getUserProfile失败：', err);
                // 清除待跳转信息
                that.setData({
                    showLoginDialog: false,
                    pendingTarget: '',
                    pendingFlag: 0
                });
                wx.showToast({
                    title: '取消登录',
                    icon: 'none',
                    duration: 1500,
                });
            }
        });
    },

    /**
     * 登录后检查资料完整度
     */
    checkProfileAndRedirect() {
        const token = wx.getStorageSync('token');
        if (!token) return; // 未拿到 token 时跳过

        request({
            urlLeft: "/user/profile",
            method: "POST",
            header: { token }
        }).then((res) => {
            const info = (res && res.data && res.data.info) || {};
            const required = [info.username, info.pwd, info.realname, info.email, info.phone, (info.grade !== undefined ? info.grade : undefined)];
            const isCompleted = required.every(v => v !== undefined && v !== null && String(v).trim() !== "");
            if (!isCompleted) {
                wx.navigateTo({ url: "/pages/profile1/index" });
            }
        }).catch((err) => {
            console.warn('获取资料失败：', err);
        });
    },

    /**
     * 用户点击稍后登录
     */
    handleLater() {
        console.log('用户选择稍后登录');
        this.setData({
            showLoginDialog: false,
            pendingTarget: '',
            pendingFlag: 0
        });
        wx.showToast({
            title: '点击功能时需要登录',
            icon: 'none',
            duration: 2000,
        });
    },

    checkLogin(target,flag) {
      let grade = wx.getStorageSync('grade')||-1;
      
      if (grade === -1) {
        // 保存待跳转的页面信息
        this.setData({
          pendingTarget: target,
          pendingFlag: flag,
          showLoginDialog: true
        });
        
        wx.showToast({
          title: '请先登录',
          icon: 'none',
          duration: 1500,
        });
      }else{
        if (grade < flag) {
          wx.showToast({
            title: '权限不足',
            icon: 'none',
            duration: 1500,
            })
        }else{
          wx.navigateTo({
            url: target
        })
        }
      }
    },

    goToGuide() {
      this.checkLogin("/pages/search1/index",0);
    },
    goToSpareParts() {
      this.checkLogin("/pages/SpareParts1/index",0);
    },
    goToLog() {
      this.checkLogin("/pages/log1/index",0);
    },
    goToKnow() {
      this.checkLogin("/pages/know1/index",0);
    },
    goToCase() {
      this.checkLogin("/pages/case1/index",0);
    },


})